SerializedDependency can be a private implementation detail now.
use semver::VersionReq;
+use rustc_serialize::{Encoder, Encodable};
use core::{SourceId, Summary, PackageId};
use std::rc::Rc;
inner: Rc<DependencyInner>,
}
+
+#[derive(RustcEncodable)]
+struct SerializedDependency {
+ name: String,
+ req: String
+}
+
+impl Encodable for Dependency {
+ fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
+ SerializedDependency {
+ name: self.name().to_string(),
+ req: self.version_req().to_string()
+ }.encode(s)
+ }
+}
+
#[derive(PartialEq, Clone, Debug, Copy)]
pub enum Kind {
Normal,
}
}
-#[derive(PartialEq,Clone,RustcEncodable)]
-pub struct SerializedDependency {
- name: String,
- req: String
-}
-
-impl SerializedDependency {
- pub fn from_dependency(dep: &Dependency) -> SerializedDependency {
- SerializedDependency {
- name: dep.name().to_string(),
- req: dep.version_req().to_string()
- }
- }
-}
use std::path::{PathBuf, Path};
use semver::Version;
-use rustc_serialize::{Encoder,Encodable};
+use rustc_serialize::{Encoder, Encodable};
use core::{Dependency, PackageId, Summary};
use core::package_id::Metadata;
-use core::dependency::SerializedDependency;
use util::{CargoResult, human};
/// Contains all the information about a package, as loaded from a Cargo.toml.
}
#[derive(RustcEncodable)]
-struct SerializedManifest {
+struct SerializedManifest<'a> {
name: String,
version: String,
- dependencies: Vec<SerializedDependency>,
+ dependencies: &'a [Dependency],
targets: Vec<Target>,
}
SerializedManifest {
name: self.summary.name().to_string(),
version: self.summary.version().to_string(),
- dependencies: self.summary.dependencies().iter().map(|d| {
- SerializedDependency::from_dependency(d)
- }).collect(),
+ dependencies: self.summary.dependencies(),
targets: self.targets.clone(),
}.encode(s)
}
use core::{Dependency, Manifest, PackageId, SourceId, Registry, Target, Summary, Metadata};
use ops;
-use core::dependency::SerializedDependency;
use util::{CargoResult, graph, Config};
use rustc_serialize::{Encoder,Encodable};
use core::source::Source;
}
#[derive(RustcEncodable)]
-struct SerializedPackage {
+struct SerializedPackage<'a> {
name: String,
version: String,
- dependencies: Vec<SerializedDependency>,
+ dependencies: &'a [Dependency],
targets: Vec<Target>,
manifest_path: String,
}
SerializedPackage {
name: package_id.name().to_string(),
version: package_id.version().to_string(),
- dependencies: summary.dependencies().iter().map(|d| {
- SerializedDependency::from_dependency(d)
- }).collect(),
+ dependencies: summary.dependencies(),
targets: manifest.targets().to_vec(),
manifest_path: self.manifest_path.display().to_string()
}.encode(s)